package com.vf.admin.utils.suanfa;

import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;

public class DaZhuanPan {

	//奖池金币
	public static double jiangchi = 2000;//奖池钻石
	public static double jiacheng = 1.2;//系统为用户每参与一次就添加到奖池的钻石  百分比

	//参与一次砸金蛋的钻石数量
	public static double yazhu = 2000;//钻石

	//奖池钻石峰值，达到峰值，就必中大奖
	public static double fengZhi = 10000;//钻石

	/**
	 * 砸金蛋
	 */
	public synchronized LiWu start(double yazhu){
		double maxLiWuZuanShi = 0.0;//小于奖池峰值的礼物价值最高的钻石
		LiWu maxLiWu = null;//小于奖池峰值的礼物价值最高的钻石对应的礼物 1.2

		//第一步：增加奖池钻石
		jiangchi = jiangchi + yazhu + (jiangchi * (jiacheng*0.01));

		//第二步：筛选出不超过奖池钻石的礼物
		List<LiWu> liWuList = initData();//所有礼物
		List<LiWu> canYuLiWuList = new ArrayList<LiWu>();//筛选出不超过奖池钻石的礼物
		for(LiWu liWu : liWuList){
			if(liWu.getZuanshi() <= jiangchi){
				canYuLiWuList.add(liWu);
			}

			//获取不超过奖池峰值的价值最高的礼物价格,
			if(liWu.getZuanshi() >= maxLiWuZuanShi && liWu.getZuanshi()<=fengZhi){
				maxLiWuZuanShi = liWu.getZuanshi();
				maxLiWu = liWu;
			}
		}
		Collections.sort(canYuLiWuList, Comparator.comparing(LiWu::getZuanshi));

		//筛选过的任务参与抽奖
		int mingZhong = new Random().nextInt(canYuLiWuList.size());  //参与抽奖的礼物数
		LiWu jieGuo = canYuLiWuList.get(mingZhong);//抽奖结果

		//如果奖池钻石超过预警峰值，直接把不超过奖池钻石价值的最大的任务给用户
		if(jiangchi > fengZhi){
			jiangchi = jiangchi - maxLiWu.getZuanshi();
			jieGuo = maxLiWu;
		}else{
			jiangchi = jiangchi - jieGuo.getZuanshi();
		}
		System.out.println();
		System.out.println("礼物名称:"+jieGuo.getName()+" "+jieGuo.getZuanshi()+"  奖池钻石："+jiangchi);
		return jieGuo;
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		DaZhuanPan daZhuanPan = new DaZhuanPan();
		for(int i=0;i<=3000;i++){
			LiWu liWu = daZhuanPan.start(yazhu);

		}

	}

	public List<LiWu> initData(){
		//不同钻石的礼物
		List<LiWu> liWuList = new ArrayList<LiWu>();
		//礼物1
//		LiWu liWu = new LiWu();
//		liWu.setId(1);
//		liWu.setZuanshi(0);
//		liWu.setName("谢谢惠顾");//谢谢惠顾 ，防止奖池被击穿
//		liWuList.add(liWu);

		LiWu liWu = new LiWu();
		liWu.setId(1);
		liWu.setZuanshi(500);
		liWu.setName("礼物1");//礼物1
		liWuList.add(liWu);

		liWu = new LiWu();
		liWu.setId(1);
		liWu.setZuanshi(1200);
		liWu.setName("礼物2");//礼物2
		liWuList.add(liWu);

		liWu = new LiWu();
		liWu.setId(1);
		liWu.setZuanshi(1700);
		liWu.setName("礼物3");//礼物3
		liWuList.add(liWu);

		liWu = new LiWu();
		liWu.setId(1);
		liWu.setZuanshi(2100);
		liWu.setName("礼物4");//礼物4
		liWuList.add(liWu);

		liWu = new LiWu();
		liWu.setId(1);
		liWu.setZuanshi(2800);
		liWu.setName("礼物5");//礼物5
		liWuList.add(liWu);

		liWu = new LiWu();
		liWu.setId(1);
		liWu.setZuanshi(3500);
		liWu.setName("礼物6");//礼物6
		liWuList.add(liWu);

		liWu = new LiWu();
		liWu.setId(1);
		liWu.setZuanshi(5100);
		liWu.setName("礼物7");//礼物7
		liWuList.add(liWu);


		return liWuList;
	}
}
